/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.bean.BeanArchivo;
import model.bean.BeanComentario;
import model.bean.BeanCurso;
import model.bean.BeanTipoArchivo;
import model.bean.BeanUsuario;
import model.dao.DaoArchivo;
import model.dao.DaoComentario;
import model.dao.DaoUsuario;

/**
 *
 * @author alulab
 */
public class ServletArchivo extends HttpServlet {

    private static final int BYTES_DOWNLOAD = 1024;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String action = request.getParameter("action");
        BeanUsuario usuario = (BeanUsuario) request.getSession().getAttribute("usuario");

        if (action.equals("verarchivo")) {

            String enlace = "";

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();

            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();

            int idarchivo = Integer.parseInt(request.getParameter("idarchivo"));
            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);


            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivo_moderador.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivo_administrador.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);


        }

        if (action.equals("descargar")) {


            DaoArchivo daoarchivo = new DaoArchivo();

            int idarchivo = Integer.parseInt(request.getParameter("id"));


            BeanArchivo archivo = daoarchivo.get(idarchivo);


            String tagcurso = archivo.getCurso().getTag();
            String semestre = archivo.getSemestre();

            String nombrePDF = tagcurso + semestre;
            request.setAttribute("archivo", archivo);

            response.setContentType("application/pdf");
            response.setHeader("Content-Disposition",
                    "attachment;filename=" + nombrePDF + ".pdf");

            ServletContext ctx = getServletContext();

            String rutamd5 = "/usuarios/" + archivo.getRuta();

            InputStream is = ctx.getResourceAsStream(rutamd5);

            int read = 0;
            byte[] bytes = new byte[BYTES_DOWNLOAD];
            OutputStream os = response.getOutputStream();

            while ((read = is.read(bytes)) != -1) {
                os.write(bytes, 0, read);
            }
            
            daoarchivo.numPDF(idarchivo);
            
            os.flush();
            os.close();




        }

        if (action.equals("viewallnoreportados")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            String enlace = null;
            ArrayList<BeanArchivo> ArchivoList = new ArrayList<BeanArchivo>();
            ArchivoList = daoarchivo.Archivolistnoreportados();
            request.setAttribute("ArchivoList", ArchivoList);
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivos.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivos.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
        }

        //ACCION View (Mostrar el detalle de un registro)
        if (action.equals("reportar")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            String enlace = null;
            Integer idarchivo = Integer.parseInt(request.getParameter("idarchivo"));
            daoarchivo.reportar(idarchivo);

            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                response.sendRedirect("ServletArchivo?action=viewallnoreportados");
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                response.sendRedirect("ServletArchivo?action=viewallnoreportados");
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 0) {
                //////////FALTA VER A DONDE IRÍA!!!!!!!!!!!
            }
        }

        if (action.equals("viewallreportados")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            request.setAttribute("ArchivoReplist", daoarchivo.Archivolistreportados());
            String enlace = null;
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivos_reportados.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivos_reportados.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
        }

        //ACCION Update (Actualizar un registro)
        if (action.equals("desreportar")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            Integer idarchivo = Integer.parseInt(request.getParameter("idarchivo"));
            daoarchivo.desreportar(idarchivo);

            response.sendRedirect("ServletArchivo?action=viewallreportados");

        }

        //ACCION Delete (Elimina un registro)
        if (action.equals("delete")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            Integer idusuario = Integer.parseInt(request.getParameter("idarchivo"));
            daoarchivo.borrar(idusuario);

            response.sendRedirect("ServletArchivo?action=viewallnoreportados");
        }



          if(action.equals("editar")){
             DaoArchivo daoarchivo = new DaoArchivo();
             Integer idarchivo=Integer.parseInt(request.getParameter("idarchivo"));
             BeanArchivo archivo=new BeanArchivo();
             archivo=daoarchivo.get(idarchivo);
             
             request.setAttribute("archivo", archivo);
             
           String enlace = "";
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/editar_archivo.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/editar_archivo.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
             
            }
            
         
    if (action.equals("edit")) {
        
            DaoArchivo daoarchivo = new DaoArchivo();
            BeanArchivo archivo = new BeanArchivo();
            
           int idarchivo= Integer.parseInt(request.getParameter("idarchivo"));
           archivo.setIdarchivo(idarchivo);
           archivo.setDescripcion(request.getParameter("descripcion"));
           archivo.setCurso(new BeanCurso());
           archivo.getCurso().setIdcurso(Integer.parseInt(request.getParameter("idcurso")));
           archivo.setSemestre(request.getParameter("semestre"));
          
           archivo.setTipoarchivo(new BeanTipoArchivo());
           archivo.getTipoarchivo().setIdtipoarchivo(Integer.parseInt(request.getParameter("idtipoarchivo")));
           archivo.setNota(Integer.parseInt(request.getParameter("nota")));

           daoarchivo.updateditado(archivo);
            response.sendRedirect("ServletArchivo?action=verarchivo&idarchivo="+idarchivo);
        }
    

        //USUARIO

//Visualiza los archivos del Usuario
        if (action.equals("viewarchivos")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            int idusuario = Integer.parseInt(request.getParameter("id"));
            listaArchivos = daoarchivo.ArchivolistUser(idusuario);
            request.setAttribute("listaArchivos", listaArchivos);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/archivos.jsp");
            rd.forward(request, response);
        }

        if (action.equals("view")) {

            String enlace = "";

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();
            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
            int idarchivo = Integer.parseInt(request.getParameter("id"));
            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);

            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivo_moderador.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivo_administrador.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 0) {
                enlace = "/view/usuario/resultado_archivo.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
        }



        if (action.equals("viewMisArchivos")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            request.setAttribute("ArchivoUserlist", daoarchivo.ArchivoUserlist(((BeanUsuario) request.getSession().getAttribute("usuario")).getIdusuario()));
            String enlace = null;
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivos_subidos.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivos_subidos.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 0) {
                //FALTA VER A DONDE VA
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
        }


        if (action.equals("like")) {
            String enlace = "";

            DaoArchivo daoarchivo = new DaoArchivo();
            HttpSession session = request.getSession(true);
            int idarchivo = Integer.parseInt(request.getParameter("id"));
            int num;
            String idsesion = session.getId();
            num = daoarchivo.nummegustaSesion(idarchivo, usuario.getIdusuario(), idsesion);

            if (num == 0) {

                daoarchivo.megustaSesion(idarchivo, usuario.getIdusuario(), 1, idsesion);

                daoarchivo.like(idarchivo);

                DaoComentario daocomentario = new DaoComentario();
                ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
                int idarchivo2 = Integer.parseInt(request.getParameter("id"));
                request.setAttribute("archivo", daoarchivo.get(idarchivo2));
                listaComentarios = daocomentario.ComentariolistFile(idarchivo);
                request.setAttribute("listaComentarios", listaComentarios);
            } else {
                DaoComentario daocomentario = new DaoComentario();
                ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
                int idarchivo2 = Integer.parseInt(request.getParameter("id"));
                request.setAttribute("archivo", daoarchivo.get(idarchivo2));
                listaComentarios = daocomentario.ComentariolistFile(idarchivo);
                request.setAttribute("listaComentarios", listaComentarios);

            }

            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivo_moderador.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivo_administrador.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 0) {
                enlace = "/view/usuario/resultado_archivo.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);

        }
        
        if (action.equals("search_userlist")){
            DaoArchivo daoarchivo=new DaoArchivo();
            String enlace="";
            int idusuario=((BeanUsuario)request.getSession().getAttribute("usuario")).getIdusuario();
            request.setAttribute("ArchivoUserlist", daoarchivo.getByStringUserList(request.getParameter("cadena"), request.getParameter("fecha_registro1"), request.getParameter("fecha_registro2"),idusuario));
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivos_subidos.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivos_subidos.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
            
        }
        
         if (action.equals("search_norep")){
            DaoArchivo daoarchivo=new DaoArchivo();
            String enlace="";
            request.setAttribute("ArchivoList", daoarchivo.getByStringNoRep(request.getParameter("cadena"), request.getParameter("fecha_registro1"), request.getParameter("fecha_registro2")));
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivos.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivos.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
            
        }
                if (action.equals("search_rep")){
            DaoArchivo daoarchivo=new DaoArchivo();
            String enlace="";
            request.setAttribute("ArchivoReplist", daoarchivo.getByStringRep(request.getParameter("cadena"), request.getParameter("fecha_registro1"), request.getParameter("fecha_registro2")));
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "/view/moderador/archivos_reportados.jsp";
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "/view/administrador/archivos_reportados.jsp";
            }
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher(enlace);
            rd.forward(request, response);
            
        }

        //Busca los archivos del usuario
        if (action.equals("search_by_user")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosB = new ArrayList<BeanArchivo>();

            int idusuario = Integer.parseInt(request.getParameter("id"));

            String palabra = request.getParameter("palabra");
            listaArchivosB = daoarchivo.search_by_user(palabra, idusuario);

//            listaArchivos = daoarchivo.ArchivolistUser(idusuario);
            request.setAttribute("listaArchivosB", listaArchivosB);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/resultado.jsp");
            rd.forward(request, response);

        }

        //El usuario realiza busqueda Simple
        if (action.equals("search")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosB = new ArrayList<BeanArchivo>();

            String palabra = request.getParameter("palabra");
            listaArchivosB = daoarchivo.search(palabra);

            request.setAttribute("listaArchivosB", listaArchivosB);
            request.setAttribute("palabra", palabra);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/busquedaS.jsp");
            rd.forward(request, response);

        }
        if (action.equals("viewfile")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();
            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
            int idarchivo = Integer.parseInt(request.getParameter("id"));

            String palabra = request.getParameter("palabra");
            request.setAttribute("palabra", palabra);
            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/resultado_busquedaS.jsp");
            rd.forward(request, response);
        }


        //Muestra pagina de busqueda avanzada
        if (action.equals("advmenu")) {

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/busquedaA.jsp");
            rd.forward(request, response);

        }

       if (action.equals("advsearch")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosB = new ArrayList<BeanArchivo>();

            String ciclo = request.getParameter("ciclo");
            String ncurso = request.getParameter("curso");
            int nota = Integer.parseInt(request.getParameter("nota"));
            String tipoevaluacion = request.getParameter("tipoevaluacion");

            listaArchivosB = daoarchivo.advsearch(ciclo, ncurso, nota, tipoevaluacion);

            request.setAttribute("listaArchivosB", listaArchivosB);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/resultado_busquedaA.jsp");
            rd.forward(request, response);

        }

     if (action.equals("mostvoteuser")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosVote = new ArrayList<BeanArchivo>();
            ArrayList<BeanArchivo> listaArchivosDown = new ArrayList<BeanArchivo>();

            listaArchivosDown = daoarchivo.mostDown();
            request.setAttribute("listaArchivosDown", listaArchivosDown);
            listaArchivosVote = daoarchivo.mostVote();
            request.setAttribute("listaArchivosVote", listaArchivosVote);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/lista_votados.jsp");
            rd.forward(request, response);

        }

        //Muestra los archivos mas DESCARGADOS
        if (action.equals("mostdownuser")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosVote = new ArrayList<BeanArchivo>();
            ArrayList<BeanArchivo> listaArchivosDown = new ArrayList<BeanArchivo>();

            listaArchivosDown = daoarchivo.mostDown();
            request.setAttribute("listaArchivosDown", listaArchivosDown);
            listaArchivosVote = daoarchivo.mostVote();
            request.setAttribute("listaArchivosVote", listaArchivosVote);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/lista_votados.jsp");
            rd.forward(request, response);

        }
        
         //Muestra INFO DEL ARCHIVO VOTADO PARA USUARIO
        if (action.equals("viewfilevoteuser")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();
            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
            int idarchivo = Integer.parseInt(request.getParameter("id"));

            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/usuario/archivo_votado.jsp");
            rd.forward(request, response);
        }

        //PUBLICO

        if (action.equals("viewallpublic")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosB = new ArrayList<BeanArchivo>();

            String palabra = request.getParameter("palabra");
            listaArchivosB = daoarchivo.search(palabra);
            request.setAttribute("palabra", palabra);
            request.setAttribute("listaArchivosB", listaArchivosB);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/resultado.jsp");
            rd.forward(request, response);

        }

        //Publico realiza la BUSQUEDA SIMPLE
        if (action.equals("searchpublic")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosB = new ArrayList<BeanArchivo>();

            String palabra = request.getParameter("palabra");
            listaArchivosB = daoarchivo.search(palabra);

            request.setAttribute("listaArchivosB", listaArchivosB);
            request.setAttribute("palabra", palabra);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/resultado.jsp");
            rd.forward(request, response);


        }

        //Muestra DETALLES del archivo de la BUSQUEDA SIMPLE
        if (action.equals("viewfilepublic")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();
            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
            int idarchivo = Integer.parseInt(request.getParameter("id"));

            String palabra = request.getParameter("palabra");
            request.setAttribute("palabra", palabra);
            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/resultado_archivo.jsp");
            rd.forward(request, response);
        }

//Reporta un archivo
        if (action.equals("reportfile")) {

            String enlace = "";
            DaoArchivo daoarchivo = new DaoArchivo();
            Integer idarchivo = Integer.parseInt(request.getParameter("id"));
            daoarchivo.reportar(idarchivo);

            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 1) {
                enlace = "ServletArchivo?action=verarchivo&idarchivo=" + idarchivo;
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 2) {
                enlace = "ServletArchivo?action=verarchivo&idarchivo=" + idarchivo;
            }
            if (((BeanUsuario) request.getSession().getAttribute("usuario")).getPrivilegio().getIdprivilegio() == 0) {
                enlace = "ServletArchivo?action=view";
            }

            response.sendRedirect(enlace);
        }

//Muestra el menu de BUSQUEDA AVANZADA PUBLICA
        if (action.equals("advmenupublic")) {

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/busquedaA.jsp");
            rd.forward(request, response);

        }

        //Muestra el resultado de BUSQUEDA AVANZADA
        if (action.equals("advsearchpublic")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosB = new ArrayList<BeanArchivo>();

            String ciclo = request.getParameter("ciclo");
            String ncurso = request.getParameter("curso");
            int nota = Integer.parseInt(request.getParameter("nota"));
            String tipoevaluacion = request.getParameter("tipoevaluacion");

            listaArchivosB = daoarchivo.advsearch(ciclo, ncurso, nota, tipoevaluacion);

            request.setAttribute("listaArchivosB", listaArchivosB);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/resultado_busquedaA.jsp");
            rd.forward(request, response);

        }


        //Muestra los archivos mas VOTADOS
        if (action.equals("mostvote")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosVote = new ArrayList<BeanArchivo>();
            ArrayList<BeanArchivo> listaArchivosDown = new ArrayList<BeanArchivo>();

            listaArchivosDown = daoarchivo.mostDown();
            request.setAttribute("listaArchivosDown", listaArchivosDown);
            listaArchivosVote = daoarchivo.mostVote();
            request.setAttribute("listaArchivosVote", listaArchivosVote);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/inicio.jsp");
            rd.forward(request, response);

        }

        //Muestra INFO DEL ARCHIVO VOTADO
         if (action.equals("viewfilevote")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();
            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
            int idarchivo = Integer.parseInt(request.getParameter("id"));

            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/archivo_votado.jsp");
            rd.forward(request, response);
        }

        //Muestra los archivos mas DESCARGADOS
         if (action.equals("mostdown")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivosDown = new ArrayList<BeanArchivo>();
            ArrayList<BeanArchivo> listaArchivosVote = new ArrayList<BeanArchivo>();

            listaArchivosVote = daoarchivo.mostVote();
            request.setAttribute("listaArchivosVote", listaArchivosVote);
            listaArchivosDown = daoarchivo.mostDown();
            request.setAttribute("listaArchivosDown", listaArchivosDown);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/inicio.jsp");
            rd.forward(request, response);

        }

        //Muestra INFO DEL ARCHIVO DESCARGADOS
        if (action.equals("viewfiledown")) {

            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daocomentario = new DaoComentario();
            ArrayList<BeanComentario> listaComentarios = new ArrayList<BeanComentario>();
            int idarchivo = Integer.parseInt(request.getParameter("id"));

            request.setAttribute("archivo", daoarchivo.get(idarchivo));
            listaComentarios = daocomentario.ComentariolistFile(idarchivo);
            request.setAttribute("listaComentarios", listaComentarios);

            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/publico/archivo_votado.jsp");
            rd.forward(request, response);
        }



    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
